import * as bm from "/js/baseModule.js";
// let wx = require("/js/wx_js_sdk.js");

export class Module extends bm.baseModule {
    constructor(view) {
        super(view);
        window['deviceData'] = JSON.parse(localStorage.getItem("deviceData") + "");
        let vueDom = this.find("#Code_vue")[0];
        let user = globalData.user;
        this.preventMoreAsk = false;// 阻止多次请求
        this.loc = "0,0";
        this.Code_vue = new Vue({
            el: vueDom,
            data: {
                user: user,
                code: '',
            },
            watch: {
                'code': "checkData",
            },
            methods: {
                checkData: function () {
                    this.code = this.code.replace(/[^\d]/g, '');
                }
            }
        });
        this._evt_getCode();
        let that = this;
        this.codeGain = this.find(".c-code-gain");
        this.codeParent = this.find(".c-code-put");
        this.codeParent.bind('input propertychange', 'input', function () {
            let sum = $(this).text().trim();
            if (!sum) {
                $(this).val('')
            } else {
                $(this).val($(this).val().trim());
            }
            if (4 == sum.length) {
                console.log(sum + '4位数字，尝试校验...');
                $(this).blur();
                that._code = sum;
                that._evt_toLogin();
            }
        });
    }
    codeCountDown() {
        let that = this;
        that.codeGain.html('60s后重新获取验证码').prop('disabled', true);
        let wait = 60;
        clearInterval(that._timer);
        that._timer = null;
        that._timer = setInterval(function () {
            wait--;
            that.codeGain.html(wait + 's后重新获取验证码');
            if (wait < 1) {
                clearInterval(that._timer);
                that._timer = null;
                that.codeGain.html('重新获取验证码').prop('disabled', false).addClass('code-blue');
            }
        }, 1000)
    }
    _evt_getCode() {
        let that = this;
        let phone = globalData.user.mobile;
        //a02发送手机验证码接口
        api.sendSmsCaptcha(phone, {
            succ: function () {
                //倒计时
                that.codeCountDown();
            }, fail: function (error) {
                funs.tip(error.msg, '', 'fail');
                setTimeout(function () {
                    that._evt_goback();
                }, 2000);
            }
        });
    }
    /**登录 */
    _evt_toLogin() {
        let that = this;
        let phone = globalData.user.mobile;
        let code = this._code;
        if(that.preventMoreAsk){
            return
        }
        that.preventMoreAsk = true;
        if (code) {
            api.Login({ mobile: phone, sms_captcha: code }, {
                succ: function () {
                    //绑定微信
                    let openid = globalData.openId;
                    if (openid) {
                        api.bindWxOpenId({ wx_openid: openid }, {
                            succ: function () {
                                console.log('bind success');
                                that.loginToPage();
                            },
                            fail: function () {
                                that.loginToPage();
                                console.log('bind fail');
                            }
                        })
                    } else {
                        that.loginToPage();
                    }
                    that.preventMoreAsk = false;
                }, fail: function () {
                    funs.tip("验证码有误，请重新输入", "", "fail");
                    that.codeParent.val('').attr('contenteditable', 'true');
                    $("input[name=focus]").focus();
                    that.preventMoreAsk = false;
                },
                error: function () {
                    that.preventMoreAsk = false;
                    // 跳首页
                    window.location.replace("/index.html");
                }
            });
        }
    }
    // 根据用户身份做不同的跳转；replace替换url的方式跳转，是为了不会回退到code页面；
    loginToPage() {
        if (globalData.user.user_type == 100) {
            // 是工程商 ==> 直接刷新到首页
            funs.tip("绑定成功！", "新用户赠送50个汇币、15条新项目提醒", "succ", 2000);
            setTimeout(function () {
                window.location.replace("/index.html");
            }, 2300)

        } else {
            //不是工程商 ==> 去完善资料成为工程商
            funs.tip("绑定成功！", "新用户赠送50个汇币、15条新项目提醒", "succ", 2000);
            setTimeout(function () {
                window.location.replace('#user/JoinSupplier');
            }, 2300)
        }
    }

    afterInstall() {
        //加载模块时
        $("input[name=focus]").focus();
        // this.getLocation();
    }
    getLocation(){
        let that = this;
        api.wxSign({
            succ: function (json) {
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                    appId: json.appid, // 必填，公众号的唯一标识
                    timestamp:  json.timestamp, // 必填，生成签名的时间戳
                    nonceStr:  json.nonceStr, // 必填，生成签名的随机串
                    signature: json.signature,// 必填，签名
                    jsApiList: ["getLocation"] // 必填，需要使用的JS接口列表
                });
                wx.ready(function(){
                    // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
                    wx.getLocation({
                        type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                        success: function (res) {
                            let latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
                            let longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
                            that.loc = longitude + ',' +latitude;
                            console.dir([longitude,latitude]);
                        }
                    });
                });
                wx.error(function(res){
                    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
                    console.log(res)
                });
            }
        })
    }
}
